package br.org.ifrr.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.org.ifrr.model.Motorista;
import br.org.ifrr.model.TipoManutencao;
import br.org.ifrr.model.Veiculo;

@Entity
@Table(name = "veic_item_solicitacao")
public class ItemSolicitacaoVeiculo implements Serializable {
	
	private static final long serialVersionUID = 1L;

	private Integer codigo;
	private String enderecoOrigem;
	private String cep_origem;
	private Date dataSaidaOrigem;
	private Date horaSaidaOrigem;
	private String enderecoDestino;
	private String cepDestino;
	private Date prevChegada;
	private Integer quilometragem;
	private String motivo;
	private Date dataPrevisaoRetorno;
	private Date horaPrevRetorno;
	private Integer valorEstimado;
	private Date dataSaidaGaragem;
	private String horaSaidaGaragem;
	private Date dataChegadaGaragem;
	private Date horaChegadaGaragem;
	private Integer odometroSaida;
	private String ocorrencias;
	private String outrosPassageiros;
	private TipoManutencao tipoManutencao;
	private Veiculo veiculo;
	private Motorista motorista;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "iso_codigo")
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	@Column(name = "iso_endereco_origem")
	public String getEnderecoOrigem() {
		return enderecoOrigem;
	}

	public void setEnderecoOrigem(String enderecoOrigem) {
		this.enderecoOrigem = enderecoOrigem;
	}

	@Column(name = "iso_cep_origem")
	public String getCep_origem() {
		return cep_origem;
	}

	public void setCep_origem(String cep_origem) {
		this.cep_origem = cep_origem;
	}

	@Column(name = "iso_data_saida_origem")
	@Temporal(TemporalType.DATE)
	public Date getDataSaidaOrigem() {
		return dataSaidaOrigem;
	}

	public void setDataSaidaOrigem(Date dataSaidaOrigem) {
		this.dataSaidaOrigem = dataSaidaOrigem;
	}

	@Column(name = "iso_hora_saida_origem")
	@Temporal(TemporalType.TIMESTAMP)
	public Date getHoraSaidaOrigem() {
		return horaSaidaOrigem;
	}

	public void setHoraSaidaOrigem(Date horaSaidaOrigem) {
		this.horaSaidaOrigem = horaSaidaOrigem;
	}

	@Column(name = "iso_endereco_destino")
	public String getEnderecoDestino() {
		return enderecoDestino;
	}

	public void setEnderecoDestino(String enderecoDestino) {
		this.enderecoDestino = enderecoDestino;
	}

	@Column(name = "iso_cep_destino")
	public String getCepDestino() {
		return cepDestino;
	}

	public void setCepDestino(String cepDestino) {
		this.cepDestino = cepDestino;
	}

	@Column(name = "iso_previsao_chegada")
	@Temporal(TemporalType.DATE)
	public Date getPrevChegada() {
		return prevChegada;
	}

	public void setPrevChegada(Date prevChegada) {
		this.prevChegada = prevChegada;
	}

	@Column(name = "iso_quilometragem")
	public Integer getQuilometragem() {
		return quilometragem;
	}

	public void setQuilometragem(Integer quilometragem) {
		this.quilometragem = quilometragem;
	}

	@Column(name = "iso_motivo")
	public String getMotivo() {
		return motivo;
	}

	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}

	@Column(name = "iso_data_prev_retorno")
	@Temporal(TemporalType.DATE)
	public Date getDataPrevisaoRetorno() {
		return dataPrevisaoRetorno;
	}

	public void setDataPrevisaoRetorno(Date dataPrevisaoRetorno) {
		this.dataPrevisaoRetorno = dataPrevisaoRetorno;
	}

	@Column(name = "iso_hora_prev_retorno")
	@Temporal(TemporalType.TIMESTAMP)
	public Date getHoraPrevRetorno() {
		return horaPrevRetorno;
	}

	public void setHoraPrevRetorno(Date horaPrevRetorno) {
		this.horaPrevRetorno = horaPrevRetorno;
	}

	@Column(name = "iso_valor_estimado")
	public Integer getValorEstimado() {
		return valorEstimado;
	}

	public void setValorEstimado(Integer valorEstimado) {
		this.valorEstimado = valorEstimado;
	}

	@Column(name = "iso_data_saida_garagem")
	@Temporal(TemporalType.DATE)
	public Date getDataSaidaGaragem() {
		return dataSaidaGaragem;
	}

	public void setDataSaidaGaragem(Date dataSaidaGaragem) {
		this.dataSaidaGaragem = dataSaidaGaragem;
	}

	@Column(name = "iso_hora_saida_garagem")
	public String getHoraSaidaGaragem() {
		return horaSaidaGaragem;
	}

	public void setHoraSaidaGaragem(String horaSaidaGaragem) {
		this.horaSaidaGaragem = horaSaidaGaragem;
	}

	@Column(name = "iso_data_chegada_garagem")
	@Temporal(TemporalType.DATE)
	public Date getDataChegadaGaragem() {
		return dataChegadaGaragem;
	}

	public void setDataChegadaGaragem(Date dataChegadaGaragem) {
		this.dataChegadaGaragem = dataChegadaGaragem;
	}

	@Column(name = "iso_hora_chegada_garagem")
	@Temporal(TemporalType.TIME)
	public Date getGaragem() {
		return horaChegadaGaragem;
	}

	public void setGaragem(Date horaChegadaGaragem) {
		this.horaChegadaGaragem = horaChegadaGaragem;
	}

	@Column(name = "iso_odometro_saida")
	public Integer getOdometroSaida() {
		return odometroSaida;
	}

	public void setOdometroSaida(Integer odometroSaida) {
		this.odometroSaida = odometroSaida;
	}

	@Column(name = "iso_ocorrencias")
	public String getOcorrencias() {
		return ocorrencias;
	}

	public void setOcorrencias(String ocorrencias) {
		this.ocorrencias = ocorrencias;
	}

	@Column(name = "iso_outros_passageiros")
	public String getOutrosPassageiros() {
		return outrosPassageiros;
	}

	public void setOutrosPassageiros(String outrosPassageiros) {
		this.outrosPassageiros = outrosPassageiros;
	}

	@ManyToOne
	@JoinColumn(name = "fk_tipoManutencao")
	public TipoManutencao getTipoManutencao() {
		return tipoManutencao;
	}

	public void setTipoManutencao(TipoManutencao tipoManutencao) {
		this.tipoManutencao = tipoManutencao;
	}

	@ManyToOne
	@JoinColumn(name = "fk_veiculo")
	public Veiculo getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(Veiculo veiculo) {
		this.veiculo = veiculo;
	}

	@ManyToOne
	@JoinColumn(name = "fk_motorista")
	public Motorista getMotorista() {
		return motorista;
	}

	public void setMotorista(Motorista motorista) {
		this.motorista = motorista;
	}

}
